alphanumerische Konstanten: in einfache oder doppelte Hochkommata gesetzt. Hier zwei Beispiele für gültige Zeichenketten:
| "Das ist sicher" |
| 'eine besondere "Zeichenkette"' |
numerische Konstanten: mit Dezimalpunkt, sofern notwendig. Hier zwei Beispiele für gültige numerische Konstanten:
| -2.5 |
| 123000 |
Konstante vom Typ Datum: ausgedrückt im Format [ Tag / Monat / Jahr ]. Das Jahr muss vierstellig ausgedrückt werden. Hier zwei Beispiele für gültige Konstanten vom Typ Datum:
| [15/3/2002] |
| [21/05/1819] |
logische Konstanten: numerische Konstanten, die genau zwei Werte annehmen können: 1 (oder beliebiger von null verschiedener Wert) = wahr, 0 = falsch.
Es stehen folgende Operatoren zur Verfügung:
| + | zur Addition zweier Zahlen, zur Addition eines Datums und einer Anzahl von Tagen und zur Aneinanderreihung von Zeichenketten. |
| - | zur Subtraktion zweier Zahlen, zur Subtraktion einer Anzahl von Tagen von einem Datum und zur Trennung von Zeichenketten per Einfügen eines Leerzeichens. |
| * | Multiplikation zweier Zahlen |
| / | Division zweier Zahlen |
| ^ | Potenz |
| < <= > >= <= | Vergleichsoperatoren |
|
and or xor not | Logische Operatoren, die auch abgekürzt geschrieben werden können & | ? ! |
Die Anzahl von Verschachtelungen ist unbegrenzt.
Variablen werden im Allgemeinen in folgender Form ausgedrückt:
| [ Klasse ] Variablenname ( Index ) |
Beispiel:
| [F:BPC]BPCNAME |
| MA_VARIABLE |
| ELEMENT(33) |
Der Variablenname Variablenname wird mit Buchstaben und / oder Ziffern ausgedrückt, wobei es sich beim ersten Zeichen stets um einen Buchstaben handeln muss. Unterstriche sind ebenfalls zulässig. Es werden die ersten 12 Zeichen des Variablennamens ausgewertet. Außer einigen Schlüsselwörtern der Programmiersprache wieFile, Untilund Commit sind alle Namen erlaubt. Wird ein Variablenname in Kleinbuchstaben erfasst, so wird er automatisch in Großbuchstaben umgewandelt, sofern es sich nicht um ein Schlüsselwort handelt.
Manche Variablen können mehrdimensional sein, d. h. Elementtabellen entsprechen (erlaubt sind 1 bis 4 Dimensionen). In diesem Fall werden die Indizes als per Komma getrennte numerische Ausdrücke vorgegeben (Beispiel für eine gültige Syntax: M_TB(1,2,8)).
Klassen entsprechen einer Reihe von kontextabhängigen Variablen. Die folgenden Klassen kommen am häufigsten vor:
[V]: Klasse der globalen Variablen. Globale Variablen sind an die X3-Sitzung gebunden. Nach der Anlage einer globalen Variable kann auf diese zugegriffen werden, solange sie nicht aufgelöst wird und so lange die X3-Sitzung läuft. Die Deklaration erfolgt mithilfe von speziellen Anweisungen (je nach Variablentyp Integer, Decimal, Char, Date, Libelle, Shortint, Float, Double).
[L]: Klasse der lokalen Variablen Diese Klasse ist an eine Verschachtelung von Unterprogrammen gebunden (bei jeder Call -Anweisung wird eine neue Klasse von lokalen Variablen angelegt, die die vorherige Klasse verschattet). Lokale Variablen werden auf dieselbe Weise deklariert wie globale Variablen, der Deklaration muss jedoch das Schlüsselwort Localvorangestellt werden.
[C]: Nummernkreisklassen Diese Variablen werden von allen Arbeitsplätzen eines Ordners gemeinsam genutzt. Sie werden von speziellen Entwicklungsfunktionen angelegt.
[F:abv] oder [abv]: an eine mit der File-Anweisung deklarierte Tabelle gebundene Variablenklasse. Hier finden sich die Werte des aktuellen Datensatzes.
[M:abv] oder [abv]: an eine mit der Mask-Anweisung erfasste Maske gebundene Variablenklasse. Hier finden sich die erfassten Werte und die möglichen Anzeigewerte (jedes Register auf einer Maske wird als Maske betrachtet).
Diese Klasse ist nicht obligatorisch, denn die Standardklasse kann mithilfe von Regeln ermittelt werden.
Daneben gibt es eine Reihe von so genannten Systemvariablen, die direkt von X3 verwaltet werden. Diese Variablen werden im Gegensatz zu den anderen Variablen bei der Erfassung nicht in Großbuchstaben umgewandelt, weil sie zu den Schlüsselwörtern zählen und daher in Kleinbuchstaben angezeigt werden. Hier einige Beispiele für verwendbare Systemvariablen (die Liste ist nicht vollständig):
Name | Typ | Definition |
nomap | Zeichenkette | Name des aktuellen Ordners |
datesyst | date | änderbares Systemdatum |
adxdir | Zeichenkette | X3-Datenbankrepository |
nolign | numerisch | aktuelle Zeilennummer |
fstat | numerisch | Rückgabestatus nach dem Lesen aus einer Tabelle oder dem Schreiben in eine Tabelle |
Eine Funktion wird in Form von Funktion(Argumentliste) ausgedrückt. Es gibt sehr viele Funktionen: Verarbeitungen für Zeichenketten, Datumsberechnungen, klassische numerische Funktionen, Rundungs- und Abschneidefunktionen, statistische Funktionen etc.
Nachstehend eine Liste der wichtigsten in X3 verwendbaren Funktionen. Für die Funktionstabelle gelten folgende Notationskonventionen:
v = Argument beliebigen Typs (analog v1, v2, v3 etc.)
c = Argument vom Typ Zeichenkette
x = numerisches Argument
n, p, q etc. = ganzzahliges Argument
V = Variable
liste = Liste von Variablen oder Ausdrücken TABLO-Variablen (Typ Tabelle) können in diesen Listen im Format TABLO(I) (nur ein Index), TABLO (sämtliche Indizes werden durchlaufen) und TABLO(I...J) (die Indizes I bis einschließlich J werden durchlaufen) verwendet werden.
Syntaxen | Typ | Definition |
date$ | date | Tagesdatum |
sin(x), cos(x), tan(x) | numerisch | trigonometrische Funktionen |
asin(x),acos(x)... | numerisch | inverse trigonometrische Funktionen |
log(x),exp(x),ln(x) | numerisch | logarithmische Funktionen |
abs(x), sgn(x) | numerisch | absoluter Wert, Vorzeichen |
ar2(x), arr(x,y) | numerisch | Rundung auf zwei Dezimalstellen, Rundung von x auf y |
int(x), mod(x,y) | numerisch | ganzzahliger Anteil, modulo |
len(c) | numerisch | Länge einer Zeichenkette |
day(d),month(d),year(d) | numerisch | Ausgabe des Tags, Monats, Jahrs eines Datums |
dayn(d),week(d) | numerisch | Nummer des Tags innerhalb der Woche, Wochennummer |
num$(x) | Zeichenkette | wandelt eine Zahl in eine Zeichenkette um (Dezimaldarstellung) |
space$(n), chr$(n) | Zeichenkette | aus n Leerzeichen und einem Zeichen mit internem Code n zusammengesetzte Zeichenkette |
string$(n,c), string$(n,x) | Zeichenkette | aus n c-Zeichen zusammengesetzte Zeichenkette (oder n Zeichen mit Code x) |
day$(d), month$(d) | Zeichenkette | Name des Tags, des Monats |
addmonth(d,n) | date | Datum, zu dem n Monate hinzugefügt wurden |
eomonth(d) | date | letzter Tag des Monats zu Datum d |
left$(c,n), right$(c,n) | Zeichenkette | linker / rechter Teil einer aus n Zeichen bestehenden Zeichenkette |
mid$(c,n,p), seg$(c,n,p) | Zeichenkette | Ausgabe einer Unterzeichenkette einer gegebenen Zeichenkette |
gdat$(n,p,q) | date | Aufbau eines Datums (n = Tag, p = Monat, q = Jahr) |
pat(c1,c2) | numerisch | Prüfung, ob die Zeichenkette c1 dem Modell c2 entspricht (konform: 1, sonst: 0). Das Modell darf die Metazeichen * (beliebige Anzahl von beliebigen Zeichen), ? (beliebiges Zeichen) und # (beliebige Ziffer) umfassen. |
min(liste), max(liste) | alle Typen | Minimum oder Maximum aus einer Reihe von Variablen oder Werten |
sum(liste), prd(liste) | numerisch | Summe oder Produkt aus einer Reihe von Variablen oder Werten |
avg(liste), var(liste) | numerisch | Mittelwert oder Varianz aus einer Reihe von Variablen oder Werten |
sum(liste) | Zeichenkette | Aneinanderreihung einer Reihe von Variablen oder Zeichenkettenwerten |
uni(liste) | numerisch | Prüfung, ob eine Reihe von Variablen oder Werten eindeutig ist |
find(v,liste) | numerisch | Suche nach einem beliebigen Wert in einer Liste |
evalue(c) | alle Typen | Auswertung einer Zeichenkette, die einen Ausdruck umfasst |
format$(c,v) | Zeichenkette | Formatierung eines Wertes im gegebenen Format c |
toupper(c),tolower(c) | Zeichenkette | Umwandlung in Kleinbuchstaben, in Großbuchstaben |
sigma(V=v1,v2,v3) | numerisch | Summe (V variiert zwischen v1 und v2) des Ausdrucks c3, Funktion von V |
Darüber hinaus gibt es von den Entwicklern definierte Funktionen, die in Formeln verwendbar sind. Hierfür ist folgende Syntax zu verwenden:
func TRAIT.FONCT(Funktionsliste),
wobei TRAIT für den Verarbeitungsnamen und FONCT für den betreffenden Funktionsnamen steht. Die zur Verfügung stehenden Funktionen sind in der Unterprogrammtabelledokumentiert.